package com.szxw.BaiduAi.factory;

import com.baidu.aip.face.AipFace;
import com.baidu.aip.imageclassify.AipImageClassify;
import com.baidu.aip.nlp.AipNlp;
import com.baidu.aip.ocr.AipOcr;
import com.baidu.aip.speech.AipSpeech;
import com.szxw.BaiduAi.utils.Constant;

/**
 * @Author: 苏执小威
 * @Email:1410511702@qq.com
 * @Desc: 初始化功能模块 客户端 建立连接
 * @Date: 2022/9/18 10:16
 */
public class ApiFactory {

    //自然语言
    private static AipNlp aipNlp;

    //语音技术
    private static AipSpeech aipSpeech;
    //人识别
    private static AipFace aipFace;
    //图像识别
    private static AipImageClassify aipImage;
    //文字识别
    private static AipOcr aipOcr;

    public ApiFactory() {
    }

    /**
     *  自然语言 获取ApiNlp对象 供全局使用
     * @return
     */
    public synchronized static AipNlp getNlpInstance(){
        //判断AipNlp是否存在
        if(aipNlp!=null){
            return aipNlp;
        }
        //如果不存在则创建一个AipNlp
        aipNlp = new AipNlp(Constant.APP_ID, Constant.API_KEY, Constant.SECRET_KEY);

        // 可选：设置网络连接参数
        aipNlp.setConnectionTimeoutInMillis(2000);
        aipNlp.setSocketTimeoutInMillis(60000);
        return aipNlp;
    }


    /**
     * 语音识别 获取AipSpeech对象 供全局使用
     * @return
     */
    public synchronized static AipSpeech getSpeechInstance(){
        //判断AipNlp是否存在
        if(aipSpeech != null){
            return aipSpeech;
        }
        //如果不存在则创建一个AipNlp
        aipSpeech = new AipSpeech(Constant.APP_ID, Constant.API_KEY, Constant.SECRET_KEY);

        // 可选：设置网络连接参数
        aipSpeech.setConnectionTimeoutInMillis(2000);
        aipSpeech.setSocketTimeoutInMillis(60000);
        return aipSpeech;
    }

    /**
     * 人脸识别  获取AipFace对象 供全局使用
     * @return
     */
    public synchronized static AipFace getFaceInstance(){
        //判断AipNlp是否存在
        if(aipFace != null){
            return aipFace;
        }
        //如果不存在则创建一个AipNlp
        aipFace = new AipFace(Constant.APP_ID, Constant.API_KEY, Constant.SECRET_KEY);

        // 可选：设置网络连接参数
        aipFace.setConnectionTimeoutInMillis(2000);
        aipFace.setSocketTimeoutInMillis(60000);
        return aipFace;
    }

    /**
     * 图片识别 获取AipImageClassify对象 供全局使用
     * @return
     */
    public synchronized static AipImageClassify getImageInstance(){
        //判断AipNlp是否存在
        if(aipImage != null){
            return aipImage;
        }
        //如果不存在则创建一个AipNlp
        aipImage = new AipImageClassify(Constant.APP_ID, Constant.API_KEY, Constant.SECRET_KEY);

        // 可选：设置网络连接参数
        aipImage.setConnectionTimeoutInMillis(2000);
        aipImage.setSocketTimeoutInMillis(60000);
        return aipImage;
    }

    /**
     * 文字识别 获取AipOcr对象 供全局使用
     * @return
     */
    public synchronized static AipOcr getOcrInstance(){
        //判断AipNlp是否存在
        if(aipOcr != null){
            return aipOcr;
        }
        //如果不存在则创建一个AipNlp
        aipOcr = new AipOcr(Constant.APP_ID, Constant.API_KEY, Constant.SECRET_KEY);

        // 可选：设置网络连接参数
        aipOcr.setConnectionTimeoutInMillis(2000);
        aipOcr.setSocketTimeoutInMillis(60000);
        return aipOcr;
    }



}
